<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    
</body>
<script>

    // 客户端
    // 使用Promise包装异步程序
    function ajax(ops={}){
        let {type="get", success, error, url, data={}, timeout=100} = ops;
        let str = "";
        for(let i in data){
            str += `${i}=${data[i]}&`;
        }
        url = type==="get" ? url+"?"+str.slice(0,-1) : url;
        const xhr = new XMLHttpRequest();
        xhr.timeout = timeout;
        xhr.open(type, url, true);
        if(type === "post"){
            xhr.setRequestHeader( "Content-type", "application/x-www-form-urlencoded" );
            xhr.send( str.slice(0,-1) );
        }else{
            xhr.send();
        }

        return new Promise((resolve, reject)=>{
            xhr.onload = function(){
                if(xhr.status === 200){
                    resolve(xhr.responseText);
                }else{
                    reject(xhr.status);
                }
            }
            xhr.ontimeout = function(){
                reject("timeout");
                xhr.abort();
            }
        })
    }


    // 服务器
    // const obj = {
    //     get(colObj, where){
    //         if(typeof where === "function"){
    //             success = where;
    //             where = {};
    //         }
    //         return new Promise((resolve, reject)=>{
    //             colObj.find(where, {_id:0,__v:0}, (err, data)=>{
    //                 if(err){
    //                     reject(err);
    //                 }else{
    //                     resolve(data);
    //                 }
    //             })
    //         })
    //     }
    // }
    // obj.get(user).then(res=>{}).catch(()=>{});


    // 如何使用Promise包装异步请求？？？


</script>
</html>